﻿using System;
using System.Collections.Generic;
using PomodoroSuite.EntidadesNegocio.Enumeradores;
using PomodoroSuite.FW.Comun;
using PomodoroSuite.FW.Comun.Atributos;
using PomodoroSuite.FW.Comun.Atributos.Relaciones;

namespace PomodoroSuite.EntidadesNegocio
{
    [MapearTabla("Tarea")]
    public class Tarea : BOGenerico
    {
        #region " Propiedades "

        /// <summary>
        /// Identificador
        /// </summary>
        [CampoTabla(true)]
        public int IdTarea { get; set; }

        /// <summary>
        /// Relación al set de tareas al que pertenece
        /// </summary>
        [CampoTabla]
        public int? IdTareaSet { get; set; }

        /// <summary>
        /// Identificador del usuario al que pertenece la tarea
        /// </summary>
        [CampoTabla]
        public int IdUsuario { get; set; }

        /// <summary>
        /// Nombre de la tarea
        /// </summary>
        [CampoTabla]
        public string Nombre { get; set; }

        /// <summary>
        /// Descripción de la tarea
        /// </summary>
        [CampoTabla]
        public string Descripcion { get; set; }

        /// <summary>
        /// Fecha de creación de la tarea
        /// </summary>
        [CampoTabla]
        public DateTime FechaCreacion { get; set; }


        /// <summary>
        /// Fecha de inicio de la tarea
        /// </summary>
        [CampoTabla]
        public DateTime? FechaInicio { get; set; }

        /// <summary>
        /// Tag de la tarea
        /// </summary>
        [CampoTabla]
        public string Tag { get; set; }

        /// <summary>
        /// Determina si la tarea es planificada o no
        /// </summary>
        [CampoTabla]
        public Planificacion PlanificacionTarea { get; set; }

        /// <summary>
        /// Prioridad de la tera
        /// </summary>
        [CampoTabla]
        public Prioridad PrioridadTarea { get; set; }

        /// <summary>
        /// Estado de la tarea
        /// </summary>
        [CampoTabla]
        public Estado EstadoTarea { get; set; }

        #endregion

        #region " Propiedades - Relaciones "

        /// <summary>
        /// Colección de set de tareas a las que pertenece una tarea.
        /// Generalmente solo será 1, pero en el caso de que se cancele el set
        /// entonces se tendrá que acomodar en otro set de tareas
        /// </summary>
        [MuchosAUno("IdTareaSet")]
        public TareaSet ObjTareaSet { get; set; }

        /// <summary>
        /// Relación al usuario dueño de la tarea
        /// </summary>
        [MuchosAUno("IdUsuario")]
        public Usuario ObjUsuario { get; set; }

        #endregion
    }
}
